package org.budo.xml;

import java.util.Map;

/**
 * 代表一个Xml节点
 * 
 * @author lmw
 * @see DomXmlObject
 */
public interface XmlObject {
    /**
     * 当前节点名称
     */
    String getNodeName();

    /**
     * 当前节点内容
     */
    String getTextContent();

    /**
     * 所有子节点
     */
    XmlObject[] getChildNodeArray();

    /**
     * 所有指定名称的子节点
     */
    XmlObject[] getChildNodeArrayByName(String nodeName);

    /**
     * 第一个指定名称的子节点
     */
    XmlObject getChildNodeByName(String nodeName);

    /**
     * 第一个指定名称的子节点的内容
     */
    String getChildNodeTextContentByName(String nodeName);

    XmlObject removeChildNodeByName(String nodeName);

    /**
     * 所有属性
     */
    Map<String, String> getAttributeMap();

    /**
     * 指定名称属性的值
     */
    String getAttributeValue(String attributeName);

    /**
     * 指定名称属性的值
     */
    Integer getAttributeValueInteger(String attributeName);

    /**
     * 指定名称属性的值
     */
    String getAttributeValue(String attributeName, String defaultValue);

    /**
     * 指定名称属性的值
     */
    Integer getAttributeValueInteger(String attributeName, Integer defaultValue);
}